home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / feel0_89.lha / Feel / README
Text File  |  1993-07-28  |  4KB  |  109 lines

  1.     Welcome to Feel.
  2.  
  3. ftp.bath.ac.uk: /pub/eulisp/feel-0.89.tar.Z 
  4.  
  5. Welcome to FEEL.
  6.  
  7. Compiling: 
  8.     You ought to be able to type 'make install' in the source
  9. directory, and get a working system (after changing some variables,
  10. and selecting a configuration and doing make depend). The important
  11. ones are FEEL_PATH, and the set involving your host. Read the Makefile
  12. and the manual for the options that may need changing for your system.
  13. You may need to do a 'make depend' to get the dependencies right
  14. (Assuming you have X11), although this is not absolutely necessary.
  15.  
  16. To run Feel, use the script 'feel' in the bin directory. You will need
  17. to edit FEEL_PATH here as well. If the system falls over while loading
  18. the bytecodes (this is generally because you have compiled the system
  19. without either sockets or full thread support), do 'feel -noimage'
  20. instead. You may be able to build a bytecode interpreted system using
  21. the compiler in this case.
  22.  
  23. The bytecode interpreter:
  24. This exists, but is very experimental. The compiled image is supplied,
  25. but your milage may vary. It will only work on BSD versions with
  26. sockets selected. Any other needs to go through the bootstrap process.
  27.  
  28. Bootstrapping the system.  
  29. If you want to change the low-level method-dispatch system you should
  30. edit gen-init.em in the Boot subdirectory, then run GNUmake (standard
  31. make may not work) to get a new initialisation module. Note you
  32. shouldn't need to change anything if you merely want eql-type methods.
  33. See eql.em in the Modules directory for the appropriate code.
  34.  
  35. Extremely brief intro to EuLisp:
  36. --------------------------------
  37. Eulisp is a lisp dialect with the following features:
  38.  
  39. Reflective Object system 
  40. Telos replaces Common Lisp's defclass and defstruct with similarly
  41. named constructions, which differ in syntax. Check the definition for
  42. details (or defs.em for the real truth). 
  43.  
  44. Module system
  45. EuLisp code is generally written as a set of modules, with an explicit
  46. interface. Two Modules cannot import each other --- the importation
  47. graph has to be a DAG. In practice, this can be circumvented by
  48. (ab)using generics.
  49.  
  50. Dynamic binding is different, as are the defining forms for (module)
  51. global variables --- it is (deflocal foo <optional-value>).
  52. There is also defconstant for defining immutable globals.
  53.  
  54. Read the definition for more details.
  55.  
  56. Brief intro to using feel:
  57. --------------------------
  58.  
  59. Feel attempts to conform to the eulisp specification, but misses in
  60. several respects. These bugs (both in Feel and the definition) are
  61. being fixed.
  62.  
  63. Feel takes 2 important options:
  64. -heap <n> runs feel with n meg of heap space --- general allocation area
  65. -stack-space <n> runs feel with n meg of stack space --- 'C' and static
  66. allocation area. If feel stops with 'stack space wimped out' increase
  67. this parameter. The maximum value for both of these is 50Meg.
  68.  
  69. Feel is oganised into modules. Each module is a separate namespace,
  70. and by default imports and exports no bindings.  Initially you are in
  71. the user module, which imports eulisp0, and a describe interface. An
  72. important system module is the root module--- this is where,
  73. conceptually at least modules are defined. Interpreted modules are
  74. expected to have a '.em' suffix.
  75.  
  76. In any module,
  77. (!> module-name) will enter a module, loading it if necessary. It
  78. first looks for the file in the current directory, then down the
  79. environment variable FEEL_LOAD_PATH. All bindings in that module then
  80. become available. To interacively import one module into another, use
  81. (import <mod-name>)
  82.  
  83. (!>> module-name) is the same as !>, except that it always loads the
  84. module from disk.
  85.  
  86. (loaded-modules) gives the list of currently loaded modules (including
  87. the internal ones, which are in turn re-exported by standard0).
  88.  
  89. (load-module module-name) will load the module and print the
  90. resulting module. This is the easiest way of finding out what a module
  91. exports. (Currently broken in feel 0.89)
  92.  
  93. (load-path) gives the current value of the load path (see above).
  94. (set-load-path x) sets the load path.
  95.  
  96. The !> and !>> forms can be used anywhere, while the others can only
  97. be invoked from the root module. !root will always return to the root
  98. module. 
  99.  
  100. Error handler:
  101. !exit exits the error handler
  102. !b gives a backtrace
  103. !q gives a quick backtrace
  104. (!cont <value>) will continue the last continuable error with the value 
  105.         supplied.
  106. (!B) May give a better backtrace, but is more unreliable.
  107.  
  108. pab@maths.bath.ac.uk
  109.